 // 引入cookie
import Cookie from 'js-cookie'
export default {
  state: {
	 // 是否展开侧边栏
    isCollapse: false,
	//被点击的菜单
    currentMenu: null,
	//全部菜单
    menu: [],
	// tab栏数据
    tabsList: [
		// 因为首页不可关闭
      {
        path: '/',
        name: 'home',
        label: '首页',
        icon: 'home'
      }
    ]
  },
  	// 同步的方法
  mutations: {
	  // 设置菜单方法设置,需要下载cookie的包(npm i js-cookie)向cookie里面存值
    setMenu(state, val) {
		// 对setMenu进行赋值
      state.menu = val
	  // 对Cookie进行set操作(进行JSON.stringify操作把这个值给序列化才能保存在Cookie)
      Cookie.set('menu', JSON.stringify(val))
    },
	// 清除菜单的方法（清除Cookie）
    clearMenu(state) {
      state.menu = []
	  // 移除Cookie
      Cookie.remove('menu')
    },
	// 动态添加路由
    addMenu(state, router) {
      if (!Cookie.get('menu')) {
        return
      }
	  // 获取Cookie里面的Menu(需要反序列化)
      let menu = JSON.parse(Cookie.get('menu'))
      state.menu = menu
	  // 定义一个添加动态路由的数组
      let currentMenu = [
        {
          path: '/',
          component: () => import(`@/views/Main`),
          children: []
        }
      ]
      menu.forEach(item => {
		  //判断是否有Children
        if (item.children) {
			// 进行map操作更改数组
          item.children = item.children.map(item => {
            item.component = () => import(`@/views/${item.url}`)
            return item
          })
		   // 添加动态路由(对children进行展开(...children))
          currentMenu[0].children.push(...item.children)
        } else {
          item.component = () => import(`@/views/${item.url}`)
          currentMenu[0].children.push(item)
        }
      })
      router.addRoutes(currentMenu)
    },
    selectMenu(state, val) {
      if (val.name !== 'home') {
        state.currentMenu = val
		// 去重
        let result = state.tabsList.findIndex(item => item.name === val.name)
        result === -1 ? state.tabsList.push(val) : ''
        Cookie.set('tagList', JSON.stringify(state.tabsList))
      } else {
        state.currentMenu = null
      }
      // val.name === 'home' ? (state.currentMenu = null) : (state.currentMenu = val)
    },
    getMenu(state) {
      if (Cookie.get('tagList')) {
        let tagList = JSON.parse(Cookie.get('tagList'))
        state.tabsList = tagList
      }
    },
	// tab栏中关闭对应的标签
    closeTab(state, val) {
      let result = state.tabsList.findIndex(item => item.name === val.name)
	  // 删除
      state.tabsList.splice(result, 1)
      Cookie.set('tagList', JSON.stringify(state.tabsList))
    },
	// 伸缩侧边栏
    collapseMenu(state) {
      state.isCollapse = !state.isCollapse
    }
  },
  // 异步的方法
  actions: {}
}
